package cn.cailin.day07.demo11CopyFile;

import java.io.*;

/*
    文件复制练习：一读一写

    明确：
        数据源：
        数据的目的地
    文件复制到步骤：
        1.创建字节缓冲输入流对象。构造方法中传递字节输入流
        2.创建字节缓冲输出流对象，构造方法中传递字节输出流
        3.使用字节缓冲输入流对象中的方法read，读取文件
        4.使用字节缓冲输出流中的方法write，把读取的数据写入内栈缓冲区中
        5.释放资源（会把缓冲区的数据刷新到文件中）
 */
public class Demo02CopyFile {
    public static void main(String[] args) throws IOException {
        long s=System.currentTimeMillis();
        //1.创建字节缓冲输入流对象。构造方法中传递字节输入流
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\IDEA\\day05-code\\src\\cn\\cailin\\abc.txt"));
        //2.创建字节缓冲输出流对象，构造方法中传递字节输出流
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D:\\\\IDEA\\\\day05-code\\\\src\\\\cn\\\\cailin\\\\day07\\\\abc.txt"));
        //3.使用字节缓冲输入流对象中的方法read，读取文件
        //一次读写一个字节
        /*int len=0;
        while ((len= bis.read())!=-1){
            bos.write(len);//2毫秒
        }*/
        //使用数组缓冲读取多个字节，写入多个字节
        byte[] bytes=new byte[1024];
        int len=0;
        while ((len=bis.read(bytes))!=-1){
            bos.write(bytes,0,len);//1毫秒
        }
        //4.使用字节缓冲输出流中的方法write，把读取的数据写入内栈缓冲区中
        bos.close();
        bis.close();
        //5.释放资源（会把缓冲区的数据刷新到文件中）

        long e=System.currentTimeMillis();
        System.out.println( "复制耗时："+(e-s)+"毫秒");
    }
}
